package com.zhiche.lisa.tms.service;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.IService;
import com.zhiche.lisa.tms.dao.model.ShipOrderItem;
import com.zhiche.lisa.tms.dao.model.ShipTask;
import com.zhiche.lisa.tms.dao.model.bo.ShipTaskBo;
import com.zhiche.lisa.tms.dao.model.bo.ShipTaskCountBo;
import com.zhiche.lisa.tms.dao.model.bo.ShipToByLicenseBO;
import com.zhiche.lisa.tms.dto.ReleaseDTO;
import com.zhiche.lisa.tms.dto.ShipParamDTO;
import com.zhiche.lisa.tms.vo.DepartureConfirmationVO;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 运输任务 服务类
 * </p>
 *
 * @author qichao
 * @since 2018-06-18
 */
public interface IShipTaskService extends IService<ShipTask> {

    /**
     * 根据装车单ID得到任务明细
     */
    List<ShipTaskBo> getShipTaskByShipId(Long shipmentId);

    /**
     * 司机根据装车单ID得到任务明细
     */
    List<ShipTaskBo> getShipTaskByShipIdNoTenant(Long shipmentId);

    /**
     * 根据装车单ID得到任务概况
     */
    List<ShipTaskCountBo> getShipTaskCountByShipId(String shipmentCode);

    /**
     * 根据租户id查询所有承运商的运单
     */
    List<ShipTaskCountBo> getlspWaybill(Long tenantId);


    /**
     * 根据运输任务code实现发车确认
     */
    void departureConfirmation(DepartureConfirmationVO departureConfirmationVO, String token);

    /**
     * 根据运输任务编号（Code）得到运输任务列表
     */
    ShipTask getShipTaskByCode(String code);

    /**
     * 运输任务运抵
     */
    void shippingTo(ShipToByLicenseBO shipToByLicenseBO, String token);

    List<ShipTask> selectListNoTenant(EntityWrapper<ShipTask> taskEW);

    String exportShip(ShipParamDTO dto);

    /**
     * 自有车空放指令重新推送erp
     * @param instructNo 指令号
     */
    void emptyToErps(String instructNo);

    /**
     * 根据taskId得到订单详情列表
     * @param taskId
     * @return
     */
    List<ShipOrderItem> getShipOrderItemByTaskId(String taskId);

    void shippingToToOtm(String shipmentId,String token);

    void shippingToToERP(String shipmentId);

    void updateShipOrder(ReleaseDTO releaseDTOs);

    Map<String,Object> getDevilerDate(String orderRealeseGid);
}
